package com.gpStudy.design.single;

/**
 * 单例的实现形式：
 *  1、饿汉式
 *  2、
 *
 *
 *  7、枚举实现单例，
 *         通过反射和 序列化得到的
 *         jdk层面就不允许 枚举类型通过反射进行实例化。
 *
 *
 *  反射破坏单例：
 *      构造方法虽然私有化了，但是使用单例的方式还是能调用到，
 *      可以在对象的私有构造方法中增加 判断，判断静态成员变量是否已被实例化，实例化后不允许再次实例化
 *
 *      通过反序列化，readObject 可以生成对象，这种方式不走私有的构造方法，这也就破坏了单例结构
 *      通过 查看 readObject 的源码实现，在实例化对象后，会判断是否有 readResolve 方法
 *      有这个方法会调用这个方法，这时候就可以增加逻辑判断了，
 *      这个方法返回的是 实例 会覆盖掉生成的对象，在这个方法中把静态成员变量返回，
 *      这样就变相的把新建的实例干掉了。
 *
 *
 */
public class ReadMe {
}
